home *** CD-ROM | disk | FTP | other *** search
/ Pascal Super Library / Pascal Super Library (CW International)(1997).bin / BORL_TIP / TI100 / TI202.ASC < prev    next >
Text File  |  1991-09-11  |  25KB  |  991 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.   PRODUCT : TURBO GRAPHIX TOOLBOX                      NUMBER : 202
  10.   VERSION : 1.03A
  11.        OS : PC-DOS
  12.      DATE : March 10, 1986                              PAGE : 1/16
  13.     TITLE : UPDATE FROM VERSION 1.03A TO VERSION 1.05A
  14.  
  15.  
  16.  
  17.  
  18.   This packet contains update information regarding the following
  19.   topics for the Turbo Graphix Toolbox.
  20.  
  21.  
  22.   1) AXIS DRAWING MODULE         AXIS.HGH                  PAGE 3
  23.  
  24.   2) POLYGON DRAWING MODULE      POLYGON.HGH               PAGE 9
  25.  
  26.   3) BAR CHART MODULE            HISTOGRM.HGH              PAGE 13
  27.  
  28.   This patch will update version 1.03A of the Turbo Graphix Toolbox
  29.   to version 1.05A. The Turbo Graphix ToolBox is provided in source
  30.   code form, so you can make these changes directly to the source
  31.   code. The reason these changes must be made is that the calls to
  32.   SelectWindow from procedures DrawAxis, DrawPolygon, and
  33.   DrawHistogram set the variables X1Glb, Y1Glb, X2Glb, and Y2Glb to
  34.   zero. These are the global descriptors for the axis margins in
  35.   the current window, but they are destroyed upon leaving procedure
  36.   DrawAxis. The changes described in the following pages modify the
  37.   procedures AXIS.HGH, POLYGON.HGH, and HISTOGRM.HGH so that the
  38.   axis margins maintain the correct values. After the modifications
  39.   have been made, a typical calling sequence for plotting several
  40.   curves on a common axis frame would be:
  41.  
  42.               DrawAxis(...);         { Define the axis frame. }
  43.               DrawPolygon(...);      { Plot first curve.      }
  44.               ResetAxis;             { Set AxisGlb to true.   }
  45.               DrawPolygon(...);      { Plot second curve.     }
  46.               ResetAxis;             { Set AxisGlb to true.   }
  47.               DrawHistogram(...);    { Plot third curve.      }
  48.  
  49.  
  50.   If  you make the changes described,  you should change the header  of
  51.   all the modules that end in .HGH to read:
  52.  
  53.          "TURBO GRAPHIX version 1.05A"
  54.  
  55.   You   should  change  the  module  version  number  in  AXIS.HGH,
  56.   POLYGON.HGH,and HISTOGRM.HGH to read:
  57.  
  58.          "Module version 1.05A"
  59.  
  60.   Note: You should also delete the variable declaration:
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.  
  71.  
  72.  
  73.  
  74.  
  75.   PRODUCT : TURBO GRAPHIX TOOLBOX                      NUMBER : 202
  76.   VERSION : 1.03A
  77.        OS : PC-DOS
  78.      DATE : March 10, 1986                              PAGE : 2/16
  79.     TITLE : UPDATE FROM VERSION 1.03A TO VERSION 1.05A
  80.  
  81.  
  82.  
  83.  
  84.                        Font : IBMFont;
  85.  
  86.   from  the file DUMMY.INC .
  87.  
  88.                            AXIS.HGH
  89.      (***********************************************************)
  90.      (*                TURBO GRAPHIX version 1.03A              *)
  91.      (*                                                         *)
  92.      (*                   Axis drawing module                   *)
  93.      (*                  Module version  1.03A                  *)
  94.      (*                                                         *)
  95.      (*                  Copyright (C) 1985 by                  *)
  96.      (*                  BORLAND International                  *)
  97.      (***********************************************************)
  98.   ****************** ( CHANGE 1.03A TO 1.05A ) ******************
  99.  
  100.   procedure DrawAxis(XDens,YDens,XLeft,YTop,XRight,YBottom,XAxis,
  101.                      YAxis:integer;
  102.                      Arrows:boolean);
  103.    var LineStyleLoc,xk0,yk0,xk1,yk1,xk2,yk2,NDiff:integer;
  104.        x2,y2,MaxExponentX,MaxExponentY,i,ys,xs,Delta,NPoints:integer;
  105.        Difference,Number,s,Fract:real;
  106.        X1RefLoc,X2RefLoc,Y1RefLoc,Y2RefLoc,X1RefLoc2,X2RefLoc2,
  107.        Y1RefLoc2,Y2RefLoc2:integer;
  108.        ClippingLoc,DirectModeLoc,HeaderLoc:boolean;
  109.  
  110.     function StringNumber(X1:real;
  111.                           MaxExponent:integer):wrkstring;
  112.       var y:wrkstring;
  113.       begin
  114.         str(X1*exp(-MaxExponent*ln(10.0)):5:2,y);
  115.         StringNumber:=y;
  116.       end;
  117.  
  118.     function GetExponent(X1:real):integer;
  119.       begin
  120.         GetExponent:=0;
  121.         if X1<>0.0 then
  122.           if abs(X1)>=1.0 then GetExponent:=trunc(ln(abs(X1))/ln(10.0))
  123.           else GetExponent:=-trunc(abs(ln(abs(X1)))/ln(10.0)+1.0);
  124.       end;
  125.  
  126.     procedure DrawNum(x1,y1,MaxExponent:integer;
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.  
  137.  
  138.  
  139.  
  140.  
  141.   PRODUCT : TURBO GRAPHIX TOOLBOX                      NUMBER : 202
  142.   VERSION : 1.03A
  143.        OS : PC-DOS
  144.      DATE : March 10, 1986                              PAGE : 3/16
  145.     TITLE : UPDATE FROM VERSION 1.03A TO VERSION 1.05A
  146.  
  147.  
  148.  
  149.  
  150.                       Number:real);
  151.       var i:integer;
  152.           StrNumber:wrkstring;
  153.       begin
  154.         StrNumber:=StringNumber(Number,MaxExponent);
  155.         y1:=y1-3;
  156.         for i:=1 to 5 do DrawAscii(x1,y1,1,ord(StrNumber[i]));
  157.       end;
  158.  
  159.   (AXIS.HGH cont.)
  160.     function Balance:integer;
  161.       begin
  162.         Balance:=0;
  163.         s:=s+Fract;
  164.         if s>=0 then
  165.          begin
  166.           s:=s-1.0;
  167.           Balance:=1;
  168.          end;
  169.       end;
  170.  
  171.     procedure DrawExponent(x1,y1,MaxExponent:integer);
  172.       var i:integer;
  173.           StrNumber:wrkstring;
  174.       begin
  175.         y1:=y1-3;
  176.         x1:=x1+1;
  177.         DrawAscii(x1,y1,1,49);
  178.         DrawAscii(x1,y1,1,48);
  179.         str(MaxExponent:3,StrNumber);
  180.         y1:=y1-3;
  181.         x1:=x1-7;
  182.         for i:=1 to 3 do DrawAscii(x1,y1,1,ord(StrNumber[i]));
  183.       end;
  184.  
  185.     begin { DrawAxis }
  186.       LineStyleLoc:=LinestyleGlb;
  187.       SetLineStyle(0);
  188.  
  189.       AxisGlb:=true;   <----------{***** DELETE THIS LINE. *****}
  190.  
  191.       DirectModeLoc:=DirectModeGlb;
  192.       DirectModeGlb:=true;
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.  
  203.  
  204.  
  205.  
  206.  
  207.   PRODUCT : TURBO GRAPHIX TOOLBOX                      NUMBER : 202
  208.   VERSION : 1.03A
  209.        OS : PC-DOS
  210.      DATE : March 10, 1986                              PAGE : 4/16
  211.     TITLE : UPDATE FROM VERSION 1.03A TO VERSION 1.05A
  212.  
  213.  
  214.  
  215.  
  216.       with window[WindowNdxGlb] do
  217.        begin
  218.         X1RefLoc:=x1;
  219.         X2RefLoc:=x2;
  220.         Y1RefLoc:=y1;
  221.         Y2RefLoc:=y2;
  222.  
  223.                      <---|
  224.         X1Glb:=XLeft;    |
  225.         X2Glb:=XRight;   |--------{***** DELETE THIS BLOCK. *****}
  226.         Y1Glb:=YTop;     |
  227.         Y2Glb:=YBottom;  |
  228.                      <---|
  229.  
  230.   (AXIS.HGH cont.)
  231.  
  232.   {**** CHANGE THE FOLLOWING CALL TO ReDefineWindow TO READ :  ****}
  233.   { ReDefineWindow(WindowNdxGlb,x1+XLeft,y1+YTop,x2-XRight,y2-YBottom);
  234.   }
  235.  
  236.    ReDefineWindow(WindowNdxGlb,x1+X1Glb,y1+Y1Glb,x2-X2Glb,y2-Y2Glb);
  237.  
  238.         SelectWindow(WindowNdxGlb);
  239.        end;
  240.       if (XDens<0) xor (YDens<0) then
  241.        begin
  242.         HeaderLoc:=HeaderGlb;
  243.         HeaderGlb:=False;
  244.         DrawBorder;
  245.         HeaderGlb:=HeaderLoc;
  246.        end;
  247.       XDens:=abs(XDens);
  248.       YDens:=abs(YDens);
  249.       if XDens>9 then XDens:=0;
  250.       if YDens>9 then YDens:=0;
  251.       xk0:=(X1RefGlb+4) shl 3;
  252.       yk0:=Y2RefGlb-14;
  253.       yk1:=Y1RefGlb+6;
  254.       xk1:=xk0;
  255.       yk2:=yk0;
  256.       xk2:=(X2RefGlb-2) shl 3+7;
  257.       if (XAxis>=0) or (YAxis>=0) then
  258.        begin
  259.  
  260.  
  261.  
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.  
  269.  
  270.  
  271.  
  272.  
  273.   PRODUCT : TURBO GRAPHIX TOOLBOX                      NUMBER : 202
  274.   VERSION : 1.03A
  275.        OS : PC-DOS
  276.      DATE : March 10, 1986                              PAGE : 5/16
  277.     TITLE : UPDATE FROM VERSION 1.03A TO VERSION 1.05A
  278.  
  279.  
  280.  
  281.  
  282.         ClippingLoc:=ClippingGlb;
  283.         ClippingGlb:=true;
  284.         with window[WindowNdxGlb] do
  285.          begin
  286.           X1RefLoc2:=x1;
  287.           X2RefLoc2:=x2;
  288.           Y1RefLoc2:=y1;
  289.           Y2RefLoc2:=y2;
  290.          end;
  291.         ReDefineWindow(WindowNdxGlb,X1RefLoc2+4,Y1RefLoc2+6,
  292.         X2RefLoc2-2,Y2RefLoc2-14);
  293.         SelectWindow(WindowNdxGlb);
  294.         DirectModeGlb:=false;
  295.  
  296.   (AXIS.HGH cont.)
  297.         if (XAxis>=0) then
  298.          begin
  299.           SetLineStyle(XAxis);
  300.           DrawLine(X1WldGlb,Y1WldGlb+Y2WldGlb,X2WldGlb,
  301.           Y1WldGlb+Y2WldGlb);
  302.           SetLineStyle(0);
  303.          end;
  304.         if (YAxis>=0) then
  305.          begin
  306.           SetLinestyle(YAxis);
  307.           DrawLine(0,Y1WldGlb,0,Y2WldGlb);
  308.           SetLineStyle(0);
  309.          end;
  310.         ClippingGlb:=ClippingLoc;
  311.         DirectModeGlb:=true;
  312.         ReDefineWindow(WindowNdxGlb,X1RefLoc2,Y1RefLoc2,
  313.         X2RefLoc2,Y2RefLoc2);
  314.         SelectWindow(WindowNdxGlb);
  315.        end;
  316.       if YDens>=2 then
  317.        begin
  318.         DrawLine(xk0,yk0,xk1,yk1);
  319.         if Arrows then
  320.          begin
  321.           DrawLine(xk0,yk1,xk0-4,yk1+4);
  322.           DrawLine(xk0,yk1,xk0+4,yk1+4);
  323.           dp(xk0,yk1-1);
  324.          end;
  325.  
  326.  
  327.  
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334.  
  335.  
  336.  
  337.  
  338.  
  339.   PRODUCT : TURBO GRAPHIX TOOLBOX                      NUMBER : 202
  340.   VERSION : 1.03A
  341.        OS : PC-DOS
  342.      DATE : March 10, 1986                              PAGE : 6/16
  343.     TITLE : UPDATE FROM VERSION 1.03A TO VERSION 1.05A
  344.  
  345.  
  346.  
  347.  
  348.        end;
  349.        if XDens>=2 then
  350.         begin
  351.          DrawLine(xk0,yk0,xk2+1,yk2);
  352.          if Arrows then
  353.           begin
  354.            DrawLine(xk2,yk2,xk2-4,yk2-4);
  355.            DrawLine(xk2,yk2,xk2-4,yk2+4);
  356.           end;
  357.         end;
  358.       if (abs(yk0-yk1)>=35) and (abs(xk2-xk1)>=150) then
  359.        begin
  360.         DrawLine(xk0,yk0,xk0-4,yk0);
  361.         DrawLine(xk0,yk0,xk0,yk0+4);
  362.         Delta:=Y2RefGlb-Y1RefGlb-20;
  363.         NPoints:=Delta div 7;
  364.         NDiff:=Delta-(NPoints shl 3)+NPoints;
  365.         if YDens>=4 then
  366.  
  367.         begin
  368.           if abs(Y2WldGlb)>abs(Y1WldGlb)
  369.           then MaxExponentY:=GetExponent(Y2WldGlb)
  370.           else MaxExponentY:=GetExponent(Y1WldGlb);
  371.           DrawNum(X1RefGlb shl 3,yk0+1,MaxExponentY,Y1WldGlb);
  372.           if MaxExponentY<>0
  373.           then DrawExponent(X1RefGlb shl 3+1,yk1+2,MaxExponentY);
  374.         end;
  375.         Fract:=NDiff/NPoints;
  376.         s:=-Fract;
  377.         ys:=yk0;
  378.         Difference:=(Y2WldGlb-Y1WldGlb)/NPoints;
  379.         for i:=1 to NPoints do
  380.          begin
  381.           ys:=ys-7-Balance;
  382.           if (YDens>2) and (ys>Y1RefGlb+13) then
  383.            begin
  384.             Number:=Y1WldGlb+i*Difference;
  385.             DrawLine(xk0,ys,xk0-4,ys);
  386.             if YDens>=4 then if i mod (10-YDens)=0 then
  387.               DrawNum(X1RefGlb shl 3,ys+1,MaxExponentY,Number);
  388.            end;
  389.          end;
  390.         if XDens>=4 then
  391.  
  392.  
  393.  
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400.  
  401.  
  402.  
  403.  
  404.  
  405.   PRODUCT : TURBO GRAPHIX TOOLBOX                      NUMBER : 202
  406.   VERSION : 1.03A
  407.        OS : PC-DOS
  408.      DATE : March 10, 1986                              PAGE : 7/16
  409.     TITLE : UPDATE FROM VERSION 1.03A TO VERSION 1.05A
  410.  
  411.  
  412.  
  413.  
  414.          begin
  415.           if abs(X2WldGlb)>abs(X1WldGlb)
  416.           then MaxExponentX:=GetExponent(X2WldGlb)
  417.           else MaxExponentX:=GetExponent(X1WldGlb);
  418.           DrawNum(xk0-14,yk0+10,MaxExponentX,X1WldGlb);
  419.           if MaxExponentX<>0
  420.           then DrawExponent(xk2-13,yk0+10,MaxExponentX);
  421.          end;
  422.         Delta:=abs(X2RefGlb-X1RefGlb) shl 3-41;
  423.         NPoints:=Delta div 30;
  424.         NDiff:Delta-(NPoints shl 5)+(NPoints shl 1);
  425.         Fract:=NDiff/NPoints;
  426.         s:=-Fract;
  427.         xs:=xko-1;
  428.         Difference:=(X2WldGlb-X1WldGlb)/NPoints;
  429.         for i:=1 to NPoints do
  430.  
  431.   (AXIS.HGH cont.)
  432.         begin
  433.           xs:=xs+30+Balance:
  434.           if (XDens>2) and (xs<X2RefGlb shl 3+7-24) then
  435.            begin
  436.             Number:=X1WldGlb+i*Difference;
  437.             DrawLine(xs,yk0,xs,yk0+4);
  438.             if XDens>=4 then if i mod (10-XDens)=0 then
  439.               DrawNum(xs-14,yk0+10,MaxExponentX,Number);
  440.            end;
  441.          end;
  442.        end;
  443.        ReDefineWindow(WindowNdxGlb,X1RefLoc,Y1RefLoc,
  444.        X2RefLoc,Y2RefLoc);
  445.        SelectWindow(WindowNdxGlb);
  446.        DirectModeGlb:=DirectModeLoc;
  447.        SetLineStyle(LineStyleLoc);
  448.  
  449.                      |---{ ***** INSERT THE FOLLOWING BLOCK. *****}
  450.         <------------|
  451.                      | AxisGlb := true;
  452.                      | X1Glb := XLeft;
  453.                      | X2Glb := XRight;
  454.                      | Y1Glb := YTop;
  455.                      | Y2Glb := YBottom;
  456.                      |
  457.  
  458.  
  459.  
  460.  
  461.  
  462.  
  463.  
  464.  
  465.  
  466.  
  467.  
  468.  
  469.  
  470.  
  471.   PRODUCT : TURBO GRAPHIX TOOLBOX                      NUMBER : 202
  472.   VERSION : 1.03A
  473.        OS : PC-DOS
  474.      DATE : March 10, 1986                              PAGE : 8/16
  475.     TITLE : UPDATE FROM VERSION 1.03A TO VERSION 1.05A
  476.  
  477.  
  478.  
  479.  
  480.                      |---{ ***************************************}
  481.     end;
  482.  
  483.     {***** APPEND THE FOLLOWING PROCEDURE TO AXIS.HGH *****}
  484.  
  485.   procedure ResetAxis;
  486.     begin
  487.       AxisGlb := true;
  488.     end;
  489.                           POLYGON.HGH
  490.     (***********************************************************)
  491.     (*                                                         *)
  492.     (*              TURBO GRAPHIX version 1.03A                *)
  493.     (*                                                         *)
  494.     (*                Polygon drawing module                   *)
  495.     (*                 Module version 1.03A                    *)
  496.     (*                                                         *)
  497.     (*                Copyright  (C) 1985 by                   *)
  498.     (*                BORLAND   International                  *)
  499.     (***********************************************************)
  500.   ********************( CHANGE 1.03A TO 1.05A )********************
  501.  
  502.   procedure DrawPolygon(A:PlotArray;
  503.                         I0,NPoints,Line,Scale,Lines:integer);
  504.     var i,x1,x2,y1,y2,XOffset,YOffset:integer;
  505.         X1RefLoc,Y1RefLoc,X2RefLoc,Y2RefLoc:integer;
  506.         DeltaY,XOs1,XOs2,YOs1,YOs2:integer;
  507.         AutoClip,DirectModeLoc,PlotLine,PlotSymbol:boolean;
  508.  
  509.         X1Loc,Y1Loc,X2Loc,Y2Loc:integer; <--{*** INSERT THIS LINE. ***}
  510.  
  511.     procedure DrawPointClipped(x,y:integer);
  512.       begin
  513.         if (x1>X1RefGlb shl 3) and (x2<X2RefGlb shl 3+7) then
  514.           if (y1>Y1RefGlb) and (y2<Y2RefGlb) then dp(x,y);
  515.       end;
  516.  
  517.     procedure DrawItem(X,Y:integer);
  518.       var LineStyleLoc:integer;
  519.  
  520.       begin
  521.         LineStyleLoc:=LineStyleGlb;
  522.         SetLineStyle(0);
  523.  
  524.  
  525.  
  526.  
  527.  
  528.  
  529.  
  530.  
  531.  
  532.  
  533.  
  534.  
  535.  
  536.  
  537.   PRODUCT : TURBO GRAPHIX TOOLBOX                      NUMBER : 202
  538.   VERSION : 1.03A
  539.        OS : PC-DOS
  540.      DATE : March 10, 1986                              PAGE : 9/16
  541.     TITLE : UPDATE FROM VERSION 1.03A TO VERSION 1.05A
  542.  
  543.  
  544.  
  545.  
  546.         case Line of
  547.           2: DrawCrossDiag(X,Y,Scale);
  548.           3,4: DrawSquareC(X-Scale,Y+Scale,X+Scale,Y-Scale,(Line=4));
  549.           5: DrawDiamond(X,Y,Scale+1);
  550.           6: DrawWye(X,Y,Scale+1);
  551.           1: DrawCross(X,Y,Scale);
  552.           8: DrawCircleDirect(X,Y,Scale+1,False);
  553.           9: begin
  554.                PlotLine:=false;
  555.                if AutoClip then DrawPointClipped(X,Y)
  556.                else dp(X,Y);
  557.              end;
  558.  
  559.   (POLYGON.HGH cont.)
  560.  
  561.           7: DrawStar(X,Y,Scale);
  562.          end;
  563.         SetLineStyle(LineStyleLoc);
  564.       end;
  565.  
  566.     begin
  567.       if abs(NPoints-I0)>=2 then
  568.  
  569.        begin
  570.            <-------------|{***** INSERT THE FOLLOWING BLOCK. *****}
  571.                          |
  572.                          | X1Loc := X1Glb;
  573.                          | Y1Loc := Y1Glb;
  574.                          | X2Loc := X2Glb;
  575.                          | Y2Loc := Y2Glb;
  576.                          |
  577.                          |{***************************************}
  578.         DirectModeLoc:=DirectModeGlb;
  579.         DirectModeGlb:=true;
  580.         AutoClip:=(NPoints<0);
  581.         NPoints:=abs(NPoints);
  582.         XOs1:=1;
  583.         XOs2:=1;
  584.         YOs1:=6;
  585.         YOs2:=6;
  586.         if AxisGlb then
  587.          begin
  588.           XOs1:=4;
  589.  
  590.  
  591.  
  592.  
  593.  
  594.  
  595.  
  596.  
  597.  
  598.  
  599.  
  600.  
  601.  
  602.  
  603.   PRODUCT : TURBO GRAPHIX TOOLBOX                      NUMBER : 202
  604.   VERSION : 1.03A
  605.        OS : PC-DOS
  606.      DATE : March 10, 1986                             PAGE : 10/16
  607.     TITLE : UPDATE FROM VERSION 1.03A TO VERSION 1.05A
  608.  
  609.  
  610.  
  611.  
  612.           XOs2:=2;
  613.           YOs1:=6;
  614.           YOs2:=14;
  615.           if (((X2RefGlb+7-XOs2-X1RefGlb+XOs1) > (XOs1+XOs2) shl 1) and
  616.              (Y2RefGlb-YOs2-Y1RefGlb+YOs1 > (YOs1+YOs2) shl 1)) then
  617.            begin
  618.             X1RefLoc:=X1RefGlb;
  619.             x1:=X1RefGlb+XOs1+X1Glb;
  620.             Y1RefLoc:=Y1RefGlb;
  621.             y1:=Y1RefGlb+YOs1+Y1Glb;
  622.             X2RefLoc:=X2RefGlb;
  623.             x2:=X2RefGlb-XOs2-X2Glb;
  624.             Y2RefLoc:=Y2RefGlb;
  625.             y2:=Y2RefGlb-YOs2-Y2Glb;
  626.             ReDefineWindow(WindowNdxGlb,x1,y1,x2,y2);
  627.             SelectWindow(WindowNdxGlb);
  628.  
  629.   (POLYGON.HGH cont.)
  630.  
  631.              <-----------------|{***** INSERT THE FOLLOWING LINE. *****}
  632.                                |
  633.                                | AxisGlb := true;
  634.                                |
  635.                                |{**************************************}
  636.            end;
  637.          end;
  638.  
  639.         PlotLine:=(Line>=0);
  640.         PlotSymbol:=(Line<>0);
  641.         Line:=abs(Line);
  642.         Scale:=abs(Scale);
  643.       if Lines<0 then DeltaY:=trunc(1.0/(abs(Y1WldGlb)+abs(Y2WldGlb)) *
  644.                               abs(Y1WldGlb) * abs(Y2RefGlb-Y1RefGlb))+1
  645.      else DeltaY:=0;
  646.      if (NPoints<2) and MessageGlb then
  647.        writeln('<DrawPolygon>: too few data pairs -> (NPoints) >= 2')
  648.      else
  649.       begin
  650.        x1:=WindowX(A[I0,1]);
  651.        y1:=Y2RefGlb+Y1RefGlb-WindowY(A[I0,2]);
  652.        DrawItem(x1,y1);
  653.        if Abs(Lines)=1 then
  654.          if AutoClip then DrawLineClipped(x1,Y2RefGlb-DeltaY,x1,y1)
  655.  
  656.  
  657.  
  658.  
  659.  
  660.  
  661.  
  662.  
  663.  
  664.  
  665.  
  666.  
  667.  
  668.  
  669.   PRODUCT : TURBO GRAPHIX TOOLBOX                      NUMBER : 202
  670.   VERSION : 1.03A
  671.        OS : PC-DOS
  672.      DATE : March 10, 1986                             PAGE : 11/16
  673.     TITLE : UPDATE FROM VERSION 1.03A TO VERSION 1.05A
  674.  
  675.  
  676.  
  677.  
  678.          else DrawLine(x1,Y2RefGlb-DeltaY,x1,y1);
  679.        for i:=I0+1 to NPoints do
  680.         begin
  681.          x2:=WindowX(A[i,1]);
  682.          y2:=Y2RefGlb+Y1RefGlb-WindowY(A[i,2]);
  683.          DrawItem(x2,y2);
  684.          if Abs(Lines)=1 then
  685.            if AutoClip then DrawLineClipped(x2,Y2RefGlb-DeltaY,x2,y2)
  686.            else DrawLine(x2,Y2RefGlb-DeltaY,x2,y2);
  687.          if PlotLine then
  688.            if AutoClip then DrawLineClipped(x1,y1,x2,y2)
  689.            else DrawLine(x1,y1,x2,y2);
  690.          x1:=x2;
  691.          y1:=y2;
  692.         end;
  693.       end;
  694.      if AxisGlb then
  695.       begin
  696.        ReDefineWindow(WindowNdxGlb,X1RefLoc,Y1RefLoc,X2RefLoc,Y2RefLoc);
  697.        SelectWindow(WindowNdxGlb);
  698.  
  699.          <------------------|{***** INSERT THE FOLLOWING BLOCK. *****}
  700.                             |
  701.                             | X1Glb := X1Loc;
  702.                             | Y1Glb := Y1Loc;
  703.                             | X2Glb := X2Loc;
  704.                             | Y2Glb := Y2Loc;
  705.                             |
  706.                             |{***************************************}
  707.  
  708.        AxisGlb:=false;
  709.      end;
  710.      DirectModeGlb:=DirectModeLoc;
  711.     end
  712.    else error(18,4);
  713.   end;
  714.  
  715.                             HISTOGRM.HGH
  716.     (***********************************************************)
  717.     (*                                                         *)
  718.     (*               TURBO GRAPHIX version 1.03A               *)
  719.     (*                                                         *)
  720.     (*                    Bar chart module                     *)
  721.  
  722.  
  723.  
  724.  
  725.  
  726.  
  727.  
  728.  
  729.  
  730.  
  731.  
  732.  
  733.  
  734.  
  735.   PRODUCT : TURBO GRAPHIX TOOLBOX                      NUMBER : 202
  736.   VERSION : 1.03A
  737.        OS : PC-DOS
  738.      DATE : March 10, 1986                             PAGE : 12/16
  739.     TITLE : UPDATE FROM VERSION 1.03A TO VERSION 1.05A
  740.  
  741.  
  742.  
  743.  
  744.     (*                 Module  version  1.03A                  *)
  745.     (*                                                         *)
  746.     (*                 Copyright (C) 1985 by:                  *)
  747.     (*                 BORLAND  International                  *)
  748.     (*                                                         *)
  749.     (***********************************************************)
  750.   *******************( CHANGE 1.03A TO 1.05A ) *********************
  751.  
  752.   procedure DrawHistogram(A:PlotArray;
  753.                           NPoints:integer;
  754.                           Hatching:boolean;
  755.                           HatchStyle:integer);
  756.  
  757.     var x1,x2,y2,NPixels,Delta,NDiff,YRef:integer;
  758.         LineStyleLoc,i:integer;
  759.         Fract,s,y,YAxis:real;
  760.         DirectModeLoc,Negative:boolean;
  761.         wtemp:WindowType;
  762.          <------------------|{***** INSERT THE FOLLOWING LINE. *****}
  763.                             |
  764.                             | X1Loc,Y1Loc,X2Loc,Y2Loc:integer;
  765.                             |
  766.                             |{**************************************}
  767.      function Balance:integer;
  768.       begin
  769.         Balance:=0;
  770.         s:=s+Fract;
  771.         if s>=0.0 then
  772.          begin
  773.           s:=s-1.0;
  774.           Balance:=1;
  775.          end;
  776.       end;
  777.  
  778.     begin { DrawHistogram }
  779.       if abs(NPoints)>=2 then
  780.        begin
  781.  
  782.   (HISTOGRM.HGH cont.)
  783.  
  784.         <--------------------|{***** INSERT THE FOLLOWING BLOCK. *****}
  785.                              |
  786.                              | X1Loc := X1Glb;
  787.  
  788.  
  789.  
  790.  
  791.  
  792.  
  793.  
  794.  
  795.  
  796.  
  797.  
  798.  
  799.  
  800.  
  801.   PRODUCT : TURBO GRAPHIX TOOLBOX                      NUMBER : 202
  802.   VERSION : 1.03A
  803.        OS : PC-DOS
  804.      DATE : March 10, 1986                             PAGE : 13/16
  805.     TITLE : UPDATE FROM VERSION 1.03A TO VERSION 1.05A
  806.  
  807.  
  808.  
  809.  
  810.                              | Y1Loc := Y1Glb;
  811.                              | X2Loc := X2Glb;
  812.                              | Y2Loc := Y2Glb;
  813.                              |
  814.                              |{***************************************}
  815.         LineStyleLoc:=LinestyleGlb;
  816.         SetLineStyle(0);
  817.         if AxisGlb then
  818.          begin
  819.           wtemp:=window[WindowNdxGlb];
  820.           ReDefineWindow(WindowNdxGlb,X1RefGlb+4+X1Glb,
  821.                          Y1RefGlb+6+Y1Glb,
  822.                          X2RefGlb-2-X2Glb,Y2RefGlb-14-Y2Glb);
  823.           SelectWindow(WindowNdxGlb);
  824.  
  825.           <----------------|{*****  INSERT THE  FOLLOWING  LINE. *****}
  826.                            |
  827.                            | AxisGlb := true;
  828.                            |
  829.                            |{**************************************}
  830.          end;
  831.         DirectModeLoc:=DirectModeGlb;
  832.         DirectModeGlb:=true;
  833.         Negative:=NPoints<0;
  834.         NPoints:=abs(NPoints);
  835.         NPixels:=(X2RefGlb-X1RefGlb) shl 3+7;
  836.         Delta:=NPixels div NPoints;
  837.         NDiff:=NPixels-Delta*NPoints;
  838.         Fract:=NDiff/NPoints;
  839.         s:=-Fract;
  840.         x1:=X1RefGlb shl 3;
  841.         YRef:=trunc(Y2RefGlb+Y1RefGlb-AyGlb);
  842.         if Negative then DrawStraight(x1,X2RefGlb shl 3+7,YRef);
  843.         YAxis:=Y1RefGlb;
  844.         if BYGlb>0 then YAxis:=Y2RefGlb;
  845.  
  846.   (HISTOGRM.HGH cont.)
  847.  
  848.         for i:=1 to NPoints do
  849.          begin
  850.           x2:=x1+Delta+Balance;
  851.           y:=A[i,2];
  852.           if not Negative then y:=abs(y);
  853.  
  854.  
  855.  
  856.  
  857.  
  858.  
  859.  
  860.  
  861.  
  862.  
  863.  
  864.  
  865.  
  866.  
  867.   PRODUCT : TURBO GRAPHIX TOOLBOX                      NUMBER : 202
  868.   VERSION : 1.03A
  869.        OS : PC-DOS
  870.      DATE : March 10, 1986                             PAGE : 14/16
  871.     TITLE : UPDATE FROM VERSION 1.03A TO VERSION 1.05A
  872.  
  873.  
  874.  
  875.  
  876.           if AxisGlb then y2:=trunc(AyGlb+ByGlb*y)
  877.           else y2:=trunc((AyGlb+ByGlb*y)*0.99);
  878.           y2:=Y2RefGlb+Y1RefGlb-y2;
  879.           if not Negative then
  880.            begin
  881.             DrawLine(x1,YAxis,x1,y2);
  882.             DrawStraight(x1,x2,y2);
  883.             DrawLine(x2,y2,x2,YAxis);
  884.             if Hatching then
  885.               if odd(i) then hatch(x1,y2,x2,YAxis,HatchStyle)
  886.               else hatch(x1,y2,x2,YAxis,-HatchStyle);
  887.            end
  888.           else
  889.            begin
  890.             DrawLine(x1,YRef,x1,y2);
  891.             DrawStraight(x1,x2,y2);
  892.             DrawLine(x2,y2,x2,YRef);
  893.             if Hatching then
  894.              if YRef-y2<0 then
  895.               if odd(i) then hatch(x1,YRef,x2,y2,HatchStyle)
  896.               else hatch(x1,YRef,x2,y2,-HatchStyle)
  897.              else if odd(i) then hatch(x1,y2,x2,YRef,HatchStyle)
  898.              else hatch(x1,y2,x2,YRef,-HatchStyle);
  899.            end;
  900.           x1:=x2;
  901.          end;
  902.         if AxisGlb then
  903.          begin
  904.           window[WindowNdxGlb]:=wtemp;
  905.           SelectWindow(WindowNdxGlb);
  906.  
  907.   (HISTOGRM.HGH cont.)
  908.  
  909.            <-------------|{***** INSERT THE FOLLOWING BLOCK. *****}
  910.                          |
  911.                          | X1Glb := X1Loc;
  912.                          | Y1Glb := Y1Loc;
  913.                          | X2Glb := X2Loc;
  914.                          | Y2Glb := Y2Loc;
  915.                          |
  916.                          |{***************************************}
  917.  
  918.           AxisGlb:=false;
  919.  
  920.  
  921.  
  922.  
  923.  
  924.  
  925.  
  926.  
  927.  
  928.  
  929.  
  930.  
  931.  
  932.  
  933.   PRODUCT : TURBO GRAPHIX TOOLBOX                      NUMBER : 202
  934.   VERSION : 1.03A
  935.        OS : PC-DOS
  936.      DATE : March 10, 1986                             PAGE : 15/16
  937.     TITLE : UPDATE FROM VERSION 1.03A TO VERSION 1.05A
  938.  
  939.  
  940.  
  941.  
  942.          end;
  943.         DirectModeGlb:=DirectModeLoc;
  944.         SetLineStyle(LineStyleLoc);
  945.        end
  946.       else error(19,4);
  947.     end;
  948.  
  949.  
  950.  
  951.  
  952.  
  953.  
  954.  
  955.  
  956.  
  957.  
  958.  
  959.  
  960.  
  961.  
  962.  
  963.  
  964.  
  965.  
  966.  
  967.  
  968.  
  969.  
  970.  
  971.  
  972.  
  973.  
  974.  
  975.  
  976.  
  977.  
  978.  
  979.  
  980.  
  981.  
  982.  
  983.  
  984.  
  985.  
  986.  
  987.  
  988.  
  989.  
  990.  
  991.